package com.yunkeji.api.user.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 用户基本信息更新对象
 *
 * @author 老张
 * @date 2024-05-27
 */
@Data
public class UpdateUserInfoBo implements Serializable {

    private static final long serialVersionUID = 1L;

    /** appUser重要信息 */
    @Valid private AppUser appUser;

    /** appUser扩展信息 */
    @Valid private AppUserExt appUserExt;

    @Valid
    @Data
    public class AppUser {

        /** 性别 */
        @Max(2)
        @Min(0)
        private Integer sex;

        /** 视频价格 */
        @Max(10000)
        @Min(1)
        private BigDecimal videoPrice;

        /** 语音价格 */
        @Max(10000)
        @Min(1)
        private BigDecimal vioceBalance;
        /** 是否勿扰 */
        private Integer disturbFlag;
        /** 是否启用视频速配1是0否 */
        private Integer enableMatch;
    }

    @Valid
    @Data
    public class AppUserExt {
        /** 用户昵称 */
        private String nickName;
        /** 年龄 */
        @Max(100)
        @Min(18)
        private Integer age;

        /** 身高，单位cm */
        @Max(250)
        @Min(100)
        private Integer height;

        /** 体重 ，单位kg */
        @Max(250)
        @Min(40)
        private Integer weight;

        /** 体格体型 */
        private Integer physique;

        /** 头像路径 */
        private String headUrl;

        /** 出生日期 */
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        @JsonFormat(pattern = "yyyy-MM-dd")
        private Date birthDate;

        /** 学历 */
        private Integer education;

        /** 职业 */
        private Integer profession;

        /** 星座 */
        private Integer constellation;

        /** 感情状态 */
        private Integer sentiment;

        /** 约会状态 */
        private Integer tryst;

        /** 接受同居 */
        private Integer liveTogether;

        /** 心情 */
        private Integer mood;

        /** 居住城市 */
        private Long liveCity;
        /** 居住城市 */
        private Long liveProvince;
        /** 爱好 */
        private List<Integer> hobby;
        /** 语音介绍 */
        private String voiceIntro;
        /** 语音介绍-时长 */
        private Integer voiceIntroTime;
        /** 视频介绍 */
        private Integer videoIntroTime;
        /** 视频介绍-时长 */
        private String videoIntro;
        /** 视频介绍-封面 */
        private String videoIntroCover;
        /** 视频介绍-封面-动图 */
        private String videoIntroCoverGif;
        /** 相册 */
        @Size(max = 5, message = "最大五张")
        private List<Album> albumPics;

        /** 收入 */
        private Integer income;
    }

    @Valid
    @Data
    public static class Album {
        private Long id;
        private String resUrl;
    }
}
